/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package deti.es.persistence.network;

import deti.es.persistence.account.AccountDoesNotExist;
import deti.es.ukni.persistence.entity.Account;
import deti.es.ukni.persistence.entity.Band;
import deti.es.ukni.persistence.entity.Friend;
import java.util.Set;
import javax.ejb.Remote;

/**
 * SocialNetwork Remote Interface
 *
 * @author ukni
 */
@Remote
public interface SocialNetworkRemote {

 
    /**
     * Add a friend to the friends list
     *
     * @param account the account of a registered user
     * @param IDFriend the id of a user to add on the friends list
     * @throws deti.es.persistence.account.AccountDoesNotExist
     */
    public void addFriend(Account account, Integer IDFriend) throws AccountDoesNotExist;

    /**
     * Add the band to the list of folllowed bands
     *
     * @param account the account of the registered user
     * @param IDBand the id of the band that is going to be followed by the user
     */
    public void followBand(Account account, Integer IDBand);

    /**
     * Add a comment to the band
     *
     * @param account the account of the registered user
     * @param comment the comment added by the user
     * @param IDBand the id of the band that will receive the comment
     */
    public void commentBand(Account account, String comment, Integer IDBand);

    /**
     * Add a comment to the Audio file
     *
     * @param account the account of the registered user
     * @param comment the comment added by the user
     * @param IDAudio the id of the audio file that will receive the comment
     */
    public void commentAudio(Account account, String comment, Integer IDAudio);

    /**
     * Add a comment to the Event
     *
     * @param account the account of the registered user
     * @param comment the comment added by the user
     * @param IDEvent the id of the event that will receive the comment
     */
    public void commentEvent(Account account, String comment, Integer IDEvent);

    /**
     * Add a comment to the Image file
     *
     * @param account the account of the registered user
     * @param comment the comment added by the user
     * @param IDImage the id of the image file that will receive the comment
     */
    public void commentImage(Account account, String comment, Integer IDImage);

    /**
     * Add a comment to the Video file
     *
     * @param account the account of the registered user
     * @param comment the comment added by the user
     * @param IDVideo the id of the video file that will receive the comment
     */
    public void commentVideo(Account account, String comment, Integer IDVideo);

    /**
     * Return a list of the favorite bands
     *
     * @param account the account of the registered user
     * @return a list of favorite bands
     */
    public Set<Band> viewFavoriteBands(Account account);

    /**
     * Return a list of the friends
     *
     * @param account the account of the registered user
     * @return a list of friends
     */
    public Set<Friend> viewFriends(Account account);

    /**
     * Return a list of followers of a band
     *
     * @param IDBand the id of the band
     * @return a list of people that follow the band
     */
    public Set<Account> viewFollowers(Integer IDBand);
}